home *** CD-ROM | disk | FTP | other *** search
/ 220 Jogos / 220 jogos.iso / classicos / resta11 / SIntroScene.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2001-12-24  |  3.6 KB  |  200 lines

  1. // SIntroScene.cpp: Implementierung der Klasse SIntroScene.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4.  
  5. #include "stdafx.h"
  6. #include "SIntroScene.h"
  7.  
  8. #ifdef _DEBUG
  9. #undef THIS_FILE
  10. static char THIS_FILE[]=__FILE__;
  11. #define new DEBUG_NEW
  12. #endif
  13.  
  14. #define INIT_INIT int abcdef=0;
  15. #define INIT(a) for (abcdef=0;abcdef < sizeof(a)/sizeof(float);abcdef++){a[abcdef]=0.0f;}
  16.  
  17. #define MAX_TIME 2500
  18.  
  19. //////////////////////////////////////////////////////////////////////
  20. // Konstruktion/Destruktion
  21. //////////////////////////////////////////////////////////////////////
  22.  
  23. SIntroScene::SIntroScene()
  24. {
  25.     switchState(TEXT_THE);
  26.     done = false;
  27. }
  28.  
  29. SIntroScene::~SIntroScene()
  30. {
  31.  
  32. }
  33.  
  34. void SIntroScene::create(HDC hDC)
  35. {
  36.     font.createFont(hDC,"Arial",36,0.0f,SFontAttri(800,false,false));
  37.     timer.create();
  38.     
  39.     snowMan.create();
  40.     snowMan.setPosition(0.0f,-5.0f,-12.0f);
  41. }
  42.  
  43. void SIntroScene::update(float frametime)
  44. {
  45.     static float lastTime;
  46.  
  47.     //Zeit abgelaufen seit letztem Schuss
  48.     //Wird aktualisiert...
  49.     totalTime += timer.getTime() - lastTime;
  50.     lastTime = timer.getTime();
  51.  
  52.     if (totalTime >= MAX_TIME)
  53.     {
  54.         switchState((int)(state)+1);
  55.     }
  56.  
  57.     //*******************************************
  58.  
  59.     snowMan.update(frametime);
  60.  
  61.     //******************************************
  62.  
  63.     CString text;
  64.  
  65.     switch (state)
  66.     {
  67.     case TEXT_THE:
  68.         text = "The";
  69.         break;
  70.     case TEXT_MERRY:
  71.         text = "Merry";
  72.         break;
  73.     case TEXT_CHRISTMAS:
  74.         text = "Christmas";
  75.         break;
  76.     case TEXT_SOLITAIRE:
  77.         text = "Solitaire";
  78.         break;
  79.     case TEXT_BROUGHT2U:
  80.         text = "Brought to you";
  81.         break;
  82.     case TEXT_BY:
  83.         text = "BY";
  84.         break;
  85.     case TEXT_SNOWMAN:
  86.         text = " Snowman ";
  87.         break;
  88.     default:
  89.         return;
  90.     }
  91.  
  92.     size[0] += frametime*sizeSpeed[0];
  93.     size[1] += frametime*sizeSpeed[1];
  94.  
  95.     position[0] += frametime*movSpeed[0];
  96.     position[1] += frametime*movSpeed[1];
  97.  
  98.     alpha -= frametime*alphaSpeed;
  99.  
  100.     glPushMatrix();
  101.  
  102.     glTranslatef(position[0],position[1],-8.0f);
  103.     glScalef(size[0],size[1],1.0f);
  104.  
  105.     glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
  106.     glDisable(GL_TEXTURE_2D);
  107.     glEnable(GL_BLEND);
  108.     glDisable(GL_DEPTH_TEST);
  109.  
  110.     glColor4f(1.0f,1.0f,1.0f,alpha);
  111.  
  112.     font.drawText(CENTER,text);
  113.  
  114.     glEnable(GL_TEXTURE_2D);
  115.     glDisable(GL_BLEND);
  116.     glEnable(GL_DEPTH_TEST);
  117.  
  118.     glBlendFunc(GL_ONE,GL_ONE);
  119.  
  120.     glPopMatrix();
  121.  
  122.     glPushMatrix();
  123.  
  124.     //glRotatef(45.0f,0.0f,1.0f,0.0f);
  125.  
  126.     
  127.  
  128.     glPopMatrix();
  129.     
  130. }
  131.  
  132. bool SIntroScene::isDone()
  133. {
  134.     return done;
  135. }
  136.  
  137. void SIntroScene::switchState(int introState)
  138. {
  139.     state = introState;
  140.  
  141.     alphaSpeed = 0.0f;
  142.     alpha = 1.0f;
  143.     INIT_INIT
  144.     INIT(movSpeed)
  145.     INIT(position)
  146.     size[0] = 1.0f;
  147.     size[1] = 1.0f;
  148.     INIT(sizeSpeed)
  149.     totalTime = 0.0f;
  150.  
  151.  
  152.     switch (state)
  153.     {
  154.     case TEXT_THE:
  155.         sizeSpeed[0] = 0.003f;
  156.         sizeSpeed[1] = 0.003f;
  157.         alphaSpeed = 0.0005f;
  158.         break;
  159.     case TEXT_MERRY:
  160.         movSpeed[0] = 0.009f;
  161.         position[0] = -6.0f;
  162.         break;
  163.     case TEXT_CHRISTMAS:
  164.         movSpeed[0] = -0.007f;
  165.         position[0] = 7.5f;
  166.         size[0] = 1.5f;
  167.         size[1] = 1.5f;
  168.         break;
  169.     case TEXT_SOLITAIRE:
  170.         size[0] = 5.0f;
  171.         size[1] = 5.0f;
  172.         sizeSpeed[0] = -0.002f;
  173.         sizeSpeed[1] = -0.002f;
  174.         break;
  175.     case TEXT_BROUGHT2U:
  176.         size[0] = 0.5f;
  177.         size[1] = 0.5f;
  178.         alphaSpeed = 0.0005f;
  179.         break;
  180.     case TEXT_BY:
  181.         alpha = 0.0f;
  182.         alphaSpeed = -0.0007f;
  183.         movSpeed[1] = -0.005f;
  184.         position[1] = 3.5f;
  185.         break;
  186.     case TEXT_SNOWMAN:
  187.         alpha = 0.0f;
  188.         alphaSpeed = -0.0007f;
  189.         size[0] = 0.5f;
  190.         size[1] = 0.5f;
  191.         sizeSpeed[0] = 0.002f;
  192.         sizeSpeed[1] = 0.002f;
  193.         break;
  194.     default:
  195.         done = true;
  196.         break;
  197.     }
  198.  
  199. }
  200.